package com.gmd.cita.service;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityTransaction;

import com.gmd.cita.model.dao.CitaDAO;
import com.gmd.cita.model.dao.MedicoDAO;
import com.gmd.cita.model.repository.JPACitaDAO;
import com.gmd.cita.model.repository.JPAMedicoDAO;
import com.gmd.model.Cita;
import com.gmd.model.Medico;
import com.gmd.util.Utilitario;

public class CitaService {
	
	EntityManager em;
	CitaDAO citaDAO;
	MedicoDAO medicoDAO;
	
	public CitaService(){
		em = Utilitario.getInstance().getEntityManager();
		citaDAO = new JPACitaDAO(em);
		medicoDAO = new JPAMedicoDAO(em);
	}
	
	public int generaCodCita(){
		int id = citaDAO.getLastId();
		return id + 1;
	}
	
	public Cita ingresarCita(Cita o) throws RuntimeException{
		EntityTransaction tx = em.getTransaction();
		Cita cita = null;
		try{
			tx.begin();
			cita = citaDAO.insert(o);
			tx.commit();
		}catch(Exception e){
			tx.rollback();
			throw new RuntimeException("No se pudo registrar cita");
		}
		return cita;
	}
	
	public List<Medico> listarMedicos(){
		return medicoDAO.findAll();
	}

}
